DateTimeFormatter ক্লাসটি java.time প্যাকেজের একটি গুরুত্বপূর্ণ অংশ যা তারিখ এবং সময়ের ফরম্যাটিং এবং পার্সিং এর জন্য ব্যবহৃত হয়। এটি ISO 8601 স্ট্যান্ডার্ডসহ অনেক ধরণের ফরম্যাট সমর্থন করে, এবং আপনি সহজেই স্ট্রিং থেকে তারিখ/সময় তৈরি করতে পারেন, অথবা তারিখ/সময়কে স্ট্রিং-এ রূপান্তর করতে পারেন।
DateTimeFormatter ক্লাসের মূল ফিচারসমূহ:
- এটি
LocalDate,LocalTime,LocalDateTime,ZonedDateTime,Instantসহ বিভিন্ন টাইম ক্লাসের জন্য ফরম্যাটিং এবং পার্সিং সমর্থন করে। DateTimeFormatterব্যবহার করে আপনি কাস্টম তারিখ এবং সময় ফরম্যাট তৈরি করতে পারেন, যেমনyyyy-MM-dd HH:mm:ssবাdd/MM/yyyy.
DateTimeFormatter ব্যবহার করে তারিখ এবং সময় ফরম্যাট করা:
1. DateTimeFormatter এর সাথে LocalDate ফরম্যাটিং:
LocalDate (যা শুধুমাত্র তারিখ ধারণ করে, সময় নয়) ফরম্যাট করার জন্য DateTimeFormatter ব্যবহার করা যায়।
import java.time.*;
import java.time.format.DateTimeFormatter;
public class DateTimeFormatterExample {
public static void main(String[] args) {
// Create a LocalDate instance
LocalDate date = LocalDate.now();
System.out.println("Original Date: " + date);
// Create a DateTimeFormatter with a custom pattern
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
// Format the LocalDate using the DateTimeFormatter
String formattedDate = date.format(formatter);
System.out.println("Formatted Date: " + formattedDate);
}
}
আউটপুট:
Original Date: 2024-12-23
Formatted Date: 23/12/2024
ব্যাখ্যা:
DateTimeFormatter.ofPattern("dd/MM/yyyy"): এই প্যাটার্নটি দিন/মাস/বছর ফরম্যাটে তারিখ প্রিন্ট করবে।date.format(formatter): এই মেথডটিLocalDateঅবজেক্টটিকে নির্দিষ্ট ফরম্যাটে স্ট্রিংয়ে রূপান্তরিত করে।
2. DateTimeFormatter এর সাথে LocalTime ফরম্যাটিং:
এখানে LocalTime (যা সময়ের মান ধারণ করে) ফরম্যাট করার উদাহরণ দেখানো হয়েছে।
import java.time.*;
import java.time.format.DateTimeFormatter;
public class TimeFormattingExample {
public static void main(String[] args) {
// Create a LocalTime instance
LocalTime time = LocalTime.now();
System.out.println("Original Time: " + time);
// Create a DateTimeFormatter with a custom pattern for time
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("hh:mm a");
// Format the LocalTime using the DateTimeFormatter
String formattedTime = time.format(formatter);
System.out.println("Formatted Time: " + formattedTime);
}
}
আউটপুট:
Original Time: 14:35:20.345
Formatted Time: 02:35 PM
ব্যাখ্যা:
hh:mm a: এই প্যাটার্নটি ঘণ্টা:মিনিট AM/PM ফরম্যাটে সময় প্রিন্ট করবে।time.format(formatter):LocalTimeঅবজেক্টটি নির্দিষ্ট ফরম্যাটে স্ট্রিংয়ে রূপান্তরিত করে।
3. DateTimeFormatter এর সাথে LocalDateTime ফরম্যাটিং:
LocalDateTime একটি তারিখ এবং সময়ের সমন্বয়, এবং এর ফরম্যাটিংও DateTimeFormatter দ্বারা করা যেতে পারে।
import java.time.*;
import java.time.format.DateTimeFormatter;
public class DateTimeFormatterLocalDateTimeExample {
public static void main(String[] args) {
// Create a LocalDateTime instance
LocalDateTime dateTime = LocalDateTime.now();
System.out.println("Original DateTime: " + dateTime);
// Create a DateTimeFormatter with a custom pattern
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd MMMM yyyy HH:mm:ss");
// Format the LocalDateTime using the DateTimeFormatter
String formattedDateTime = dateTime.format(formatter);
System.out.println("Formatted DateTime: " + formattedDateTime);
}
}
আউটপুট:
Original DateTime: 2024-12-23T14:35:20.345
Formatted DateTime: 23 December 2024 14:35:20
ব্যাখ্যা:
dd MMMM yyyy HH:mm:ss: এখানে,dd(দিন),MMMM(মাসের নাম),yyyy(বছর),HH:mm:ss(ঘণ্টা:মিনিট:সেকেন্ড) ফরম্যাটে তারিখ এবং সময় প্রদর্শিত হয়েছে।dateTime.format(formatter):LocalDateTimeঅবজেক্টটি এই নির্দিষ্ট ফরম্যাটে স্ট্রিংয়ে রূপান্তরিত করেছে।
4. DateTimeFormatter এর মাধ্যমে ZonedDateTime ফরম্যাটিং:
ZonedDateTime ব্যবহার করে বিশ্বের বিভিন্ন সময় অঞ্চল অনুযায়ী সময় এবং তারিখের মান পাওয়া এবং ফরম্যাটিং করা যায়।
import java.time.*;
import java.time.format.DateTimeFormatter;
public class ZonedDateTimeFormatterExample {
public static void main(String[] args) {
// Create a ZonedDateTime instance
ZonedDateTime zonedDateTime = ZonedDateTime.now();
System.out.println("Original ZonedDateTime: " + zonedDateTime);
// Create a DateTimeFormatter with a custom pattern for ZonedDateTime
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss z");
// Format the ZonedDateTime using the DateTimeFormatter
String formattedZonedDateTime = zonedDateTime.format(formatter);
System.out.println("Formatted ZonedDateTime: " + formattedZonedDateTime);
}
}
আউটপুট:
Original ZonedDateTime: 2024-12-23T14:35:20.345+05:30[Asia/Kolkata]
Formatted ZonedDateTime: 23/12/2024 14:35:20 IST
ব্যাখ্যা:
dd/MM/yyyy HH:mm:ss z: এখানেzদ্বারা সময়ের অঞ্চল (যেমন: IST, GMT) নির্দিষ্ট করা হয়েছে। এটি ZonedDateTime-কে ফরম্যাট করে দিন/মাস/বছর, ঘণ্টা:মিনিট:সেকেন্ড এবং সময় অঞ্চল হিসাবে দেখাচ্ছে।z: সময় অঞ্চলের নাম (যেমনAsia/Kolkata,GMT,UTCইত্যাদি) প্রদান করে।
DateTimeFormatter Class-এর বিভিন্ন ফরম্যাটের উদাহরণ:
- ISO_LOCAL_DATE:
2024-12-23(ফরম্যাট:yyyy-MM-dd) - ISO_LOCAL_TIME:
14:35:20.345(ফরম্যাট:HH:mm:ss.SSS) - ISO_LOCAL_DATE_TIME:
2024-12-23T14:35:20.345(ফরম্যাট:yyyy-MM-dd'T'HH:mm:ss.SSS) - ISO_ZONED_DATE_TIME:
2024-12-23T14:35:20.345+05:30[Asia/Kolkata](ফরম্যাট:yyyy-MM-dd'T'HH:mm:ss.SSSXXX[ZoneId])
DateTimeFormatter ক্লাস Java 8 এর একটি অত্যন্ত শক্তিশালী টুল, যা Date and Time API এর মাধ্যমে তারিখ ও সময়ের ফরম্যাটিং এবং পার্সিং সহজতর করে তোলে। আপনি LocalDate, LocalTime, LocalDateTime, ZonedDateTime ইত্যাদি টাইম ক্লাসের জন্য কাস্টম ফরম্যাট তৈরি করতে পারেন এবং প্রয়োজনে সেগুলো স্ট্রিং-এ রূপান্তর করতে পারেন। DateTimeFormatter এর সাহায্যে আপনি সময় অঞ্চলের নাম, 24-ঘণ্টার ফরম্যাট, 12-ঘণ্টার AM/PM ফরম্যাটসহ বিভিন্ন ফরম্যাটের মধ্যে তারিখ এবং সময়ের মান পেতে পারেন।
DateTimeFormatter ক্লাসটি java.time.format প্যাকেজের একটি অংশ যা Java 8 থেকে শুরু হয়েছে। এটি Date এবং Time এর জন্য একটি ফরম্যাটিং এবং পার্সিং টুল সরবরাহ করে, যা তারিখ এবং সময়কে নির্দিষ্ট ফরম্যাটে রূপান্তর (format) বা পাঠ (parse) করতে ব্যবহৃত হয়।
DateTimeFormatter কী?
DateTimeFormatter হল একটি ক্লাস যা ব্যবহারকারীদের LocalDate, LocalTime, LocalDateTime, ZonedDateTime ইত্যাদি তারিখ এবং সময় ক্লাসগুলোকে নির্দিষ্ট ফরম্যাটে রূপান্তর করতে সহায়তা করে। এর মাধ্যমে আপনি সহজেই তারিখ এবং সময়ের মানকে String এ রূপান্তর করতে পারেন অথবা String থেকে DateTime অবজেক্টে রূপান্তর করতে পারেন।
DateTimeFormatter এর কাজ:
- Format: এটি একটি DateTime অবজেক্টকে String এ রূপান্তর করে।
- Parse: এটি একটি String থেকে DateTime অবজেক্টে রূপান্তর করে।
DateTimeFormatter তৈরি করার উপায়:
- Predefined Formatters:
DateTimeFormatter.ISO_LOCAL_DATE,DateTimeFormatter.ISO_LOCAL_TIME,DateTimeFormatter.ISO_LOCAL_DATE_TIMEইত্যাদি পূর্বনির্ধারিত ফরম্যাট ব্যবহার করা যায়।
- Custom Formatters:
- আপনি কাস্টম ফরম্যাটও তৈরি করতে পারেন যেমন
yyyy-MM-dd HH:mm:ssঅথবাdd/MM/yyyy.
- আপনি কাস্টম ফরম্যাটও তৈরি করতে পারেন যেমন
DateTimeFormatter এর ব্যবহার উদাহরণ:
1. তারিখ এবং সময় ফরম্যাটিং (Formatting DateTime)
import java.time.*;
import java.time.format.DateTimeFormatter;
public class DateTimeFormatterExample {
public static void main(String[] args) {
// বর্তমান তারিখ এবং সময়
LocalDateTime currentDateTime = LocalDateTime.now();
System.out.println("Current DateTime: " + currentDateTime);
// Custom DateTime Formatter
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDateTime = currentDateTime.format(formatter);
System.out.println("Formatted DateTime: " + formattedDateTime);
}
}
আউটপুট:
Current DateTime: 2024-12-23T15:45:30.123
Formatted DateTime: 2024-12-23 15:45:30
ব্যাখ্যা:
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"): এটি একটি কাস্টম ফরম্যাটার তৈরি করে, যা তারিখ এবং সময়কেyyyy-MM-dd HH:mm:ssফরম্যাটে রূপান্তর করবে।format()মেথডটিLocalDateTimeঅবজেক্টটিকে একটি String ফরম্যাটে রূপান্তর করে।
2. String থেকে DateTime Parsing (DateTime Parsing)
এখন, ধরুন আপনি একটি তারিখ এবং সময়ের স্ট্রিং পাবেন এবং সেই স্ট্রিংটি একটি DateTime অবজেক্টে রূপান্তর করতে চান।
import java.time.*;
import java.time.format.DateTimeFormatter;
public class DateTimeParsingExample {
public static void main(String[] args) {
// String format date
String dateTimeString = "2024-12-23 15:45:30";
// Custom DateTime Formatter for parsing
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// Parse the string into LocalDateTime
LocalDateTime parsedDateTime = LocalDateTime.parse(dateTimeString, formatter);
System.out.println("Parsed DateTime: " + parsedDateTime);
}
}
আউটপুট:
Parsed DateTime: 2024-12-23T15:45:30
ব্যাখ্যা:
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"): একইভাবে এখানে একটি কাস্টম ফরম্যাটার তৈরি করা হয়েছে।parse()মেথডটি স্ট্রিংটি একটিLocalDateTimeঅবজেক্টে রূপান্তরিত করে।
3. Standard Formatters:
Java-তে কিছু standard formatters রয়েছে যেগুলো ISO 8601 স্ট্যান্ডার্ড অনুসরণ করে এবং সহজেই ব্যবহৃত হতে পারে।
import java.time.*;
import java.time.format.DateTimeFormatter;
public class StandardDateTimeFormatter {
public static void main(String[] args) {
// Get the current date and time
ZonedDateTime zonedDateTime = ZonedDateTime.now();
System.out.println("Current ZonedDateTime: " + zonedDateTime);
// Use ISO standard formatter
DateTimeFormatter isoFormatter = DateTimeFormatter.ISO_ZONED_DATE_TIME;
String formattedDateTime = zonedDateTime.format(isoFormatter);
System.out.println("Formatted ZonedDateTime (ISO): " + formattedDateTime);
}
}
আউটপুট:
Current ZonedDateTime: 2024-12-23T15:45:30.123+05:30[Asia/Kolkata]
Formatted ZonedDateTime (ISO): 2024-12-23T15:45:30.123+05:30[Asia/Kolkata]
ব্যাখ্যা:
DateTimeFormatter.ISO_ZONED_DATE_TIME: এটি ISO স্ট্যান্ডার্ড অনুযায়ীZonedDateTimeফরম্যাট করে।
কাস্টম ফরম্যাটিং (Custom Formatting) উদাহরণ:
import java.time.*;
import java.time.format.DateTimeFormatter;
public class CustomDateTimeFormatter {
public static void main(String[] args) {
// বর্তমান তারিখ এবং সময়
LocalDateTime currentDateTime = LocalDateTime.now();
// কাস্টম ফরম্যাট ব্যবহার
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss");
String formattedDateTime = currentDateTime.format(formatter);
// আউটপুট
System.out.println("Formatted DateTime: " + formattedDateTime);
}
}
আউটপুট:
Formatted DateTime: 23-12-2024 15:45:30
DateTimeFormatter এর প্রধান ফরম্যাটিং প্যাটার্ন:
- yyyy: ৪ অঙ্কের বছর (যেমন: 2024)
- MM: মাস (যেমন: 12)
- dd: দিন (যেমন: 23)
- HH: ঘণ্টা (24 ঘণ্টার ফরম্যাট)
- mm: মিনিট
- ss: সেকেন্ড
- SSS: মিলিসেকেন্ড
- z: সময় অঞ্চল (যেমন: UTC, PST)
DateTimeFormatter একটি শক্তিশালী ক্লাস যা Java 8 থেকে তারিখ এবং সময়ের ফরম্যাটিং এবং পার্সিংয়ের জন্য ব্যবহৃত হয়। আপনি কাস্টম এবং স্ট্যান্ডার্ড ফরম্যাটে তারিখ এবং সময়ের মান রূপান্তর করতে পারেন। এটি ব্যবহারে আপনি তারিখ এবং সময়ের মানকে পাঠযোগ্য স্ট্রিংয়ে রূপান্তর করতে পারেন এবং স্ট্রিং থেকে তারিখ বা সময়ও পুনরুদ্ধার করতে পারেন, যা Java Time API কে আরও শক্তিশালী এবং কার্যকরী করে তোলে।
java.time প্যাকেজটি Java 8 এ যোগ করা হয়েছে এবং এটি তারিখ, সময় এবং সম্পর্কিত কাজগুলির জন্য একটি শক্তিশালী API সরবরাহ করে। এর মধ্যে Instant ক্লাস এবং Predefined ও Custom Date-Time Formats এর ব্যবহার খুবই গুরুত্বপূর্ণ। চলুন একে একে আলোচনা করি।
1. Instant Class ব্যবহার:
Instant ক্লাসটি UTC (Coordinated Universal Time) এর একটি নির্দিষ্ট মুহূর্তকে প্রতিনিধিত্ব করে। এটি epoch time (1970-01-01T00:00:00Z) থেকে সেকেন্ড এবং ন্যানোসেকেন্ডের হিসেবে সময় মাপতে ব্যবহৃত হয়।
Instant ব্যবহার করা হয় যখন আপনার টাইমস্ট্যাম্প বা সঠিক সময় পয়েন্ট প্রয়োজন হয়।
Instant ক্লাসের প্রধান মেথডসমূহ:
Instant.now(): এটি বর্তমানInstantফেরত দেয়, অর্থাৎ বর্তমান UTC সময়।Instant.ofEpochSecond(long epochSecond): এটি একটি নির্দিষ্ট epoch সেকেন্ড থেকেInstantতৈরি করে।Instant.ofEpochMilli(long epochMilli): এটি মিলিসেকেন্ডে একটি নির্দিষ্ট epoch সময় থেকেInstantতৈরি করে।toEpochMilli(): এটিInstantকে মিলিসেকেন্ডের মধ্যে epoch time হিসেবে রিটার্ন করে।
Instant ক্লাসের উদাহরণ:
import java.time.Instant;
public class InstantExample {
public static void main(String[] args) {
// Get the current instant (UTC time)
Instant currentInstant = Instant.now();
System.out.println("Current Instant: " + currentInstant);
// Convert an epoch second to Instant
Instant instantFromEpoch = Instant.ofEpochSecond(1620830325);
System.out.println("Instant from Epoch Second: " + instantFromEpoch);
// Convert an epoch millisecond to Instant
Instant instantFromEpochMilli = Instant.ofEpochMilli(1620830325000L);
System.out.println("Instant from Epoch Millisecond: " + instantFromEpochMilli);
// Convert Instant to epoch milliseconds
long epochMilli = currentInstant.toEpochMilli();
System.out.println("Epoch Milliseconds: " + epochMilli);
}
}
আউটপুট:
Current Instant: 2024-12-23T10:30:45.123Z
Instant from Epoch Second: 2021-05-12T12:45:25Z
Instant from Epoch Millisecond: 2021-05-12T12:45:25Z
Epoch Milliseconds: 1634316745123
ব্যাখ্যা:
Instant.now(): এটি বর্তমান সময়Instant(UTC) ফেরত দেয়।Instant.ofEpochSecond(long epochSecond): এটি নির্দিষ্ট epoch সেকেন্ড থেকেInstantতৈরি করে।Instant.ofEpochMilli(long epochMilli): এটি মিলিসেকেন্ডে নির্দিষ্ট epoch সময় থেকেInstantতৈরি করে।toEpochMilli(): এটিInstantকে মিলিসেকেন্ডে epoch টাইমে রূপান্তরিত করে।
2. Predefined এবং Custom Formats ব্যবহার:
java.time.format.DateTimeFormatter ক্লাসটি তারিখ এবং সময়ের মান প্রদর্শন এবং পার্স করার জন্য ব্যবহৃত হয়। এটি Predefined এবং Custom Formats সাপোর্ট করে।
Predefined Formats:
Java-তে কিছু predefined formats রয়েছে যা ISO স্ট্যান্ডার্ড অনুসরণ করে।
- ISO_LOCAL_DATE: YYYY-MM-DD (যেমন: 2024-12-23)
- ISO_LOCAL_TIME: HH:mm:ss (যেমন: 14:30:00)
- ISO_LOCAL_DATE_TIME: YYYY-MM-DDTHH:mm:ss (যেমন: 2024-12-23T14:30:00)
- ISO_ZONED_DATE_TIME: 2024-12-23T14:30:00+05:30[Asia/Kolkata]
Custom Formats:
কাস্টম ফরম্যাট তৈরি করতে আপনি DateTimeFormatter.ofPattern("pattern") ব্যবহার করতে পারেন, যেখানে আপনি pattern দিয়ে নিজের ইচ্ছেমতো ফরম্যাট সাজাতে পারেন।
Predefined Format উদাহরণ:
import java.time.*;
import java.time.format.DateTimeFormatter;
public class PredefinedFormatExample {
public static void main(String[] args) {
LocalDate date = LocalDate.now();
LocalTime time = LocalTime.now();
LocalDateTime dateTime = LocalDateTime.now();
// ISO Predefined Formats
System.out.println("ISO_LOCAL_DATE: " + date.format(DateTimeFormatter.ISO_LOCAL_DATE));
System.out.println("ISO_LOCAL_TIME: " + time.format(DateTimeFormatter.ISO_LOCAL_TIME));
System.out.println("ISO_LOCAL_DATE_TIME: " + dateTime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME));
}
}
আউটপুট:
ISO_LOCAL_DATE: 2024-12-23
ISO_LOCAL_TIME: 14:30:00
ISO_LOCAL_DATE_TIME: 2024-12-23T14:30:00
Custom Format উদাহরণ:
import java.time.*;
import java.time.format.DateTimeFormatter;
public class CustomFormatExample {
public static void main(String[] args) {
LocalDateTime dateTime = LocalDateTime.now();
// Custom DateTime format
DateTimeFormatter customFormatter = DateTimeFormatter.ofPattern("dd MMMM yyyy HH:mm:ss");
String formattedDateTime = dateTime.format(customFormatter);
System.out.println("Formatted DateTime: " + formattedDateTime);
}
}
আউটপুট:
Formatted DateTime: 23 December 2024 14:30:00
ব্যাখ্যা:
- Predefined Format: আপনি
DateTimeFormatter.ISO_LOCAL_DATEঅথবা অন্যান্য predefined ফরম্যাট ব্যবহার করে সহজেই ISO স্ট্যান্ডার্ড অনুসরণ করা ফরম্যাট পেতে পারেন। - Custom Format: আপনি
DateTimeFormatter.ofPattern("pattern")ব্যবহার করে নিজের কাস্টম ফরম্যাট তৈরি করতে পারেন। এখানে"dd MMMM yyyy HH:mm:ss"ফরম্যাটে দিন, মাস, বছর, ঘণ্টা, মিনিট এবং সেকেন্ড প্রদর্শন করা হয়েছে।
Pattern Syntax:
d: দিন (1-31)M: মাস (1-12)y: বছরH: ঘণ্টা (0-23)m: মিনিট (0-59)s: সেকেন্ড (0-59)a: AM/PMz: সময় অঞ্চল
- Instant ক্লাসটি UTC সময়ের একটি নির্দিষ্ট মুহূর্ত সংরক্ষণ করে এবং বিভিন্ন সময় সিস্টেমের মধ্যে কনভার্ট করতে ব্যবহৃত হয়।
- DateTimeFormatter ব্যবহার করে আপনি Predefined এবং Custom তারিখ এবং সময় ফরম্যাট তৈরি ও প্রয়োগ করতে পারেন।
- Predefined Formats যেমন
ISO_LOCAL_DATE,ISO_LOCAL_TIMEএবংISO_LOCAL_DATE_TIMEব্যবহার করে আপনি সহজে ISO স্ট্যান্ডার্ড অনুযায়ী তারিখ ও সময় ফরম্যাট করতে পারেন। - Custom Formats দিয়ে আপনি নির্দিষ্ট প্যাটার্নে তারিখ এবং সময় ফরম্যাট করতে পারেন।
এটি Java 8+ তে তারিখ, সময় এবং টাইমস্ট্যাম্পের কাজ করার জন্য একটি অত্যন্ত শক্তিশালী এবং কার্যকরী API।
java.time প্যাকেজটি Java 8 থেকে পরিচিত এবং এটি তারিখ, সময় এবং সময় অঞ্চলের সাথে সম্পর্কিত কাজ সহজভাবে করার জন্য আধুনিক API প্রদান করে। এর মধ্যে LocalDate, LocalTime, এবং ZonedDateTime ক্লাসগুলি বেশ গুরুত্বপূর্ণ, কারণ এগুলি আপনার কাজের সময় এবং তারিখ সম্পর্কিত বিভিন্ন কাজ করতে সাহায্য করে। এই ক্লাসগুলোকে আপনি ফরম্যাটিং এবং পার্সিং করতে পারেন যেভাবে আপনি চান, যাতে ব্যবহারকারীর জন্য সহজ এবং মানব-পঠনযোগ্য ফরম্যাট তৈরি করা যায়।
LocalDate, LocalTime, এবং ZonedDateTime ফরম্যাটিং:
Java তে ফরম্যাটিং করার জন্য DateTimeFormatter ক্লাসটি ব্যবহৃত হয়। এই ক্লাসটি আপনার তারিখ এবং সময়ের অবজেক্টকে স্ট্রিং এ রূপান্তরিত (format) এবং স্ট্রিং থেকে তারিখ বা সময় অবজেক্টে রূপান্তরিত (parse) করতে সাহায্য করে।
1. LocalDate ফরম্যাটিং:
LocalDate শুধু তারিখ (দিন, মাস, বছর) ধারণ করে এবং এটি সময় সম্পর্কিত কোনো তথ্য ধারণ করে না।
LocalDate ফরম্যাটিং উদাহরণ:
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class LocalDateFormattingExample {
public static void main(String[] args) {
// Create a LocalDate object
LocalDate date = LocalDate.now(); // Current date
// Define a custom date format
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
// Format the date to a string
String formattedDate = date.format(formatter);
System.out.println("Formatted LocalDate: " + formattedDate); // Example: 23/12/2024
}
}
ব্যাখ্যা:
DateTimeFormatter.ofPattern("dd/MM/yyyy"): এখানে"dd/MM/yyyy"হল কাস্টম ফরম্যাট, যেখানেddদিন,MMমাস, এবংyyyyবছর নির্দেশ করে।date.format(formatter):LocalDateঅবজেক্টটিকে ফরম্যাট করে স্ট্রিং রূপে রূপান্তরিত করা হচ্ছে।
আউটপুট:
Formatted LocalDate: 23/12/2024
2. LocalTime ফরম্যাটিং:
LocalTime ক্লাসটি সময় (ঘণ্টা, মিনিট, সেকেন্ড, ন্যানোসেকেন্ড) ধারণ করে, তবে এটি তারিখ বা সময় অঞ্চল সম্পর্কিত কোনো তথ্য ধারণ করে না।
LocalTime ফরম্যাটিং উদাহরণ:
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
public class LocalTimeFormattingExample {
public static void main(String[] args) {
// Create a LocalTime object
LocalTime time = LocalTime.now(); // Current time
// Define a custom time format
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
// Format the time to a string
String formattedTime = time.format(formatter);
System.out.println("Formatted LocalTime: " + formattedTime); // Example: 14:35:20
}
}
ব্যাখ্যা:
DateTimeFormatter.ofPattern("HH:mm:ss"):"HH:mm:ss"কাস্টম ফরম্যাট যেখানেHHঘণ্টা (২৪ ঘণ্টা ফরম্যাটে),mmমিনিট, এবংssসেকেন্ড।time.format(formatter):LocalTimeঅবজেক্টটিকে স্ট্রিং রূপে রূপান্তরিত করা হচ্ছে।
আউটপুট:
Formatted LocalTime: 14:35:20
3. ZonedDateTime ফরম্যাটিং:
ZonedDateTime ক্লাসটি তারিখ, সময় এবং সময় অঞ্চল সম্পর্কিত তথ্য ধারণ করে। এটি নির্দিষ্ট সময় অঞ্চলে বর্তমান সময়ের স্ট্রিং তৈরি করতে ব্যবহৃত হয়।
ZonedDateTime ফরম্যাটিং উদাহরণ:
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.ZoneId;
public class ZonedDateTimeFormattingExample {
public static void main(String[] args) {
// Create a ZonedDateTime object for a specific time zone
ZonedDateTime zonedDateTime = ZonedDateTime.now(ZoneId.of("Asia/Kolkata"));
// Define a custom date-time format
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss z");
// Format the ZonedDateTime to a string
String formattedDateTime = zonedDateTime.format(formatter);
System.out.println("Formatted ZonedDateTime: " + formattedDateTime); // Example: 2024-12-23 14:35:20 IST
}
}
ব্যাখ্যা:
ZoneId.of("Asia/Kolkata"): এটি Asia/Kolkata টাইম জোনের জন্য বর্তমান সময় সেট করে।DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss z"): এখানে"yyyy-MM-dd HH:mm:ss z"কাস্টম ফরম্যাটে ফরম্যাটিং করা হচ্ছে, যেখানেzসময় অঞ্চল প্রতিনিধিত্ব করে।
আউটপুট:
Formatted ZonedDateTime: 2024-12-23 14:35:20 IST
4. ZonedDateTime Parse থেকে DateTime Format Conversion:
এখন আপনি যদি একটি স্ট্রিং থেকে ZonedDateTime তৈরি করতে চান এবং সেটা অন্য ফরম্যাটে রূপান্তর করতে চান, তাহলে আপনি DateTimeFormatter.parse() এবং ZonedDateTime.format() ব্যবহার করতে পারেন।
ZonedDateTime Parse থেকে DateTime Format Conversion উদাহরণ:
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.ZoneId;
public class ZonedDateTimeParseExample {
public static void main(String[] args) {
// Define a date-time string with a specific format
String dateTimeString = "2024-12-23 14:35:20 IST";
// Define the formatter with the same pattern as the string
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss z");
// Parse the string to ZonedDateTime
ZonedDateTime parsedDateTime = ZonedDateTime.parse(dateTimeString, formatter);
System.out.println("Parsed ZonedDateTime: " + parsedDateTime);
// Convert parsed ZonedDateTime to a different format
DateTimeFormatter newFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss z");
String formattedDateTime = parsedDateTime.format(newFormatter);
System.out.println("Formatted ZonedDateTime: " + formattedDateTime);
}
}
আউটপুট:
Parsed ZonedDateTime: 2024-12-23T14:35:20+05:30[Asia/Kolkata]
Formatted ZonedDateTime: 23/12/2024 14:35:20 IST
LocalDate,LocalTime, এবংZonedDateTimeক্লাসগুলো Java 8 এর একটি শক্তিশালী অংশ যা সময় এবং তারিখ সম্পর্কিত কার্যক্রমের জন্য ব্যবহৃত হয়।DateTimeFormatterব্যবহার করে আপনি সহজেই ফরম্যাটিং এবং পার্সিং করতে পারেন।ZonedDateTimeএর মাধ্যমে সময় অঞ্চল সম্পর্কিত তারিখ এবং সময়কে ভালোভাবে পরিচালনা করা যায় এবং এটি ISO 8601 ফরম্যাট অনুসরণ করে।- এই ফরম্যাটিং সুবিধা আপনাকে বিশ্বের বিভিন্ন টাইম জোনে সময় সম্পর্কিত কাজ সহজে করতে সাহায্য করবে।
DateTimeFormatter একটি ক্লাস যা java.time প্যাকেজে অন্তর্ভুক্ত এবং এটি তারিখ এবং সময়ের তথ্য ফরম্যাট করার জন্য ব্যবহৃত হয়। এর মাধ্যমে আপনি LocalDateTime, LocalDate, LocalTime, ZonedDateTime ইত্যাদি তারিখ ও সময় অবজেক্টগুলোকে একটি নির্দিষ্ট ফরম্যাটে রূপান্তর করতে পারেন এবং ফরম্যাটকৃত স্ট্রিং পার্স (parse) করতে পারেন।
DateTimeFormatter একটি খুবই শক্তিশালী টুল যা আপনাকে ISO স্ট্যান্ডার্ড ছাড়াও আপনার নিজের প্রয়োজন অনুযায়ী কাস্টম তারিখ এবং সময় ফরম্যাট তৈরি করতে সহায়তা করে।
DateTimeFormatter ব্যবহার:
DateTimeFormatterদিয়ে তারিখ ও সময় ফরম্যাট করা (Formatting Date and Time):format()মেথড ব্যবহার করে আপনি একটিLocalDateTimeঅবজেক্টকে একটি নির্দিষ্ট ফরম্যাটে কনভার্ট করতে পারেন।
DateTimeFormatterদিয়ে তারিখ ও সময় স্ট্রিং পার্স করা (Parsing Date and Time):parse()মেথড ব্যবহার করে একটি ফরম্যাট করা স্ট্রিংকে একটিLocalDateTimeবা অন্য কোনোjava.timeঅবজেক্টে রূপান্তর করা যায়।
DateTimeFormatter উদাহরণ:
1. DateTimeFormatter দিয়ে তারিখ ও সময় ফরম্যাট করা (Formatting):
import java.time.*;
import java.time.format.*;
public class DateTimeFormatterExample {
public static void main(String[] args) {
// Create a LocalDateTime object
LocalDateTime dateTime = LocalDateTime.of(2024, 12, 23, 14, 30, 0); // 2024-12-23T14:30:00
// Define a DateTimeFormatter
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss");
// Format the LocalDateTime object
String formattedDateTime = dateTime.format(formatter);
// Print the formatted date and time
System.out.println("Formatted DateTime: " + formattedDateTime);
}
}
আউটপুট:
Formatted DateTime: 23-12-2024 14:30:00
ব্যাখ্যা:
DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss"): এটি একটি কাস্টম ফরম্যাট তৈরি করে। এখানে,ddদিন,MMমাস,yyyyবছর,HHঘণ্টা,mmমিনিট এবংssসেকেন্ডকে ফরম্যাট করে।dateTime.format(formatter):LocalDateTimeঅবজেক্টকে নির্দিষ্ট ফরম্যাটে রূপান্তর করা হয়েছে।
2. DateTimeFormatter দিয়ে স্ট্রিং পার্স করা (Parsing):
DateTimeFormatter ব্যবহার করে আপনি একটি ফরম্যাট করা স্ট্রিংকে একটি LocalDateTime, LocalDate, বা LocalTime অবজেক্টে রূপান্তর করতে পারেন।
import java.time.*;
import java.time.format.*;
public class DateTimeParsingExample {
public static void main(String[] args) {
// Define a DateTimeFormatter with a pattern
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss");
// Parse a string into a LocalDateTime object
String dateTimeString = "23-12-2024 14:30:00";
LocalDateTime parsedDateTime = LocalDateTime.parse(dateTimeString, formatter);
// Print the parsed LocalDateTime object
System.out.println("Parsed LocalDateTime: " + parsedDateTime);
}
}
আউটপুট:
Parsed LocalDateTime: 2024-12-23T14:30
ব্যাখ্যা:
DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss"): এটি স্ট্রিংয়ের ফরম্যাট অনুযায়ীDateTimeFormatterতৈরি করে।LocalDateTime.parse(dateTimeString, formatter): এটিdateTimeStringস্ট্রিংকেLocalDateTimeঅবজেক্টে রূপান্তর করে।
3. ISO Format ব্যবহার করা:
ISO-8601 ফরম্যাট জাভাতে ডিফল্ট ফরম্যাট হিসেবে ব্যবহৃত হয়। আপনি DateTimeFormatter.ISO_LOCAL_DATE_TIME এবং অন্যান্য ISO ফরম্যাট ব্যবহার করে তারিখ ও সময় ফরম্যাট করতে পারেন।
ISO Format উদাহরণ:
import java.time.*;
import java.time.format.*;
public class IsoDateTimeFormatterExample {
public static void main(String[] args) {
// Create a LocalDateTime object
LocalDateTime dateTime = LocalDateTime.of(2024, 12, 23, 14, 30, 0);
// Format the LocalDateTime object using ISO format
String isoFormattedDateTime = dateTime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME);
// Print the ISO formatted date and time
System.out.println("ISO Formatted DateTime: " + isoFormattedDateTime);
// Parse a string into LocalDateTime using ISO format
String isoDateTimeString = "2024-12-23T14:30:00";
LocalDateTime parsedDateTime = LocalDateTime.parse(isoDateTimeString, DateTimeFormatter.ISO_LOCAL_DATE_TIME);
// Print the parsed LocalDateTime object
System.out.println("Parsed DateTime: " + parsedDateTime);
}
}
আউটপুট:
ISO Formatted DateTime: 2024-12-23T14:30:00
Parsed DateTime: 2024-12-23T14:30
ব্যাখ্যা:
DateTimeFormatter.ISO_LOCAL_DATE_TIME: এটি একটি প্রি-ডিফাইনড ফরম্যাট, যা ISO 8601 ফরম্যাটেLocalDateTimeফরম্যাট করে।LocalDateTime.parse(): এটি স্ট্রিংটিকে একটিLocalDateTimeঅবজেক্টে রূপান্তর করে।
4. ZonedDateTime ফরম্যাট এবং পার্সিং (Time Zone এর সাথে)
ZonedDateTime ক্লাস ব্যবহার করে আপনি টাইমজোন সহ তারিখ এবং সময় ফরম্যাট করতে পারেন। এখানে DateTimeFormatter এর মাধ্যমে ZonedDateTime ফরম্যাট এবং পার্সিং দেখানো হচ্ছে।
import java.time.*;
import java.time.format.*;
public class ZonedDateTimeFormatterExample {
public static void main(String[] args) {
// Create a ZonedDateTime object
ZonedDateTime zonedDateTime = ZonedDateTime.of(2024, 12, 23, 14, 30, 0, 0, ZoneId.of("America/New_York"));
// Format the ZonedDateTime object
String zonedDateTimeString = zonedDateTime.format(DateTimeFormatter.ISO_ZONED_DATE_TIME);
System.out.println("Formatted ZonedDateTime: " + zonedDateTimeString);
// Parse a ZonedDateTime string
String zonedDateTimeInput = "2024-12-23T14:30:00-05:00[America/New_York]";
ZonedDateTime parsedZonedDateTime = ZonedDateTime.parse(zonedDateTimeInput, DateTimeFormatter.ISO_ZONED_DATE_TIME);
System.out.println("Parsed ZonedDateTime: " + parsedZonedDateTime);
}
}
আউটপুট:
Formatted ZonedDateTime: 2024-12-23T14:30:00-05:00[America/New_York]
Parsed ZonedDateTime: 2024-12-23T14:30:00-05:00[America/New_York]
ব্যাখ্যা:
DateTimeFormatter.ISO_ZONED_DATE_TIME: এটি ISO 8601 স্ট্যান্ডার্ডে টাইমজোন সহZonedDateTimeফরম্যাট করে।ZonedDateTime.parse(): এটি টাইমজোনসহ স্ট্রিংটিকেZonedDateTimeঅবজেক্টে রূপান্তর করে।
DateTimeFormatterক্লাসটি Java 8-এ Date এবং Time এর ফরম্যাটিং এবং পার্সিং কাজকে সহজ এবং শক্তিশালী করে তোলে।- এটি ISO 8601 স্ট্যান্ডার্ড এবং কাস্টম ফরম্যাটের মাধ্যমে তারিখ ও সময়ের মান ফরম্যাট করতে এবং সেগুলোকে স্ট্রিং থেকে অবজেক্টে রূপান্তর করতে সহায়তা করে।
DateTimeFormatter.ofPattern()এর মাধ্যমে আপনি আপনার প্রয়োজন অনুযায়ী কাস্টম ফরম্যাট তৈরি করতে পারেন, এবংDateTimeFormatter.ISO_*এর মাধ্যমে স্ট্যান্ডার্ড ফরম্যাটে কাজ করতে পারেন।
Read more